# -*- coding: utf-8 -*-
"""
@Author: Break
@Date: 2025/05/12
@description: 将Csv文件转换为Excel文件
"""
import sys
import os
import pandas as pd #2.2.3
import openpyxl #3.1.5 这个导入必须存在，不要删除！


def main():
    if len(sys.argv) != 2:
        print("无需双击或右键运行本程序")
        print("请直接将'.csv'文件拖放至本程序图标之上即会自动转换成'.xlsx'文件\n")
        input("按任意键退出...")
        return

    csv_path = sys.argv[1]

    # 验证文件有效性
    if not os.path.isfile(csv_path):
        print(f"错误：文件不存在 - {csv_path}")
        input("按任意键退出...")
        return

    if not csv_path.lower().endswith('.csv'):
        print("错误：仅支持CSV格式文件")
        input("按任意键退出...")
        return

    # 生成输出路径
    directory = os.path.dirname(csv_path)
    filename = os.path.splitext(os.path.basename(csv_path))[0]
    xlsx_path = os.path.join(directory, f"{filename}.xlsx")

    # 检查同名文件
    if os.path.exists(xlsx_path):
        print(f"错误：目标文件已存在\n{xlsx_path}")
        input("按任意键退出...")
        return

    try:
        # 读取CSV文件（尝试常见编码格式）
        for encoding in ['utf-8', 'gbk', 'gb2312', 'latin1']:
            try:
                df = pd.read_csv(csv_path, encoding=encoding)
                break
            except UnicodeDecodeError:
                continue
        else:
            print("错误：无法解码文件，请检查文件编码")
            input("按任意键退出...")
            return

        # 保存Excel文件
        df.to_excel(xlsx_path, index=False, engine='openpyxl')
        print(f"转换成功！\n生成文件：{xlsx_path}")

    except Exception as e:
        print(f"转换失败：{str(e)}")

    input("按任意键退出...")


if __name__ == "__main__":
    print("将'.csv'文件转换为'Xlsx'文件")
    print("开发者：Break\n")
    main()